23

» WarCraft 3 / Перевод карты

Похожие вопросы:

ответ
Мне не тру. Подсказываю самый простой способ:
  • Для начала, стоит скачать карту, которую хочешь перевести. Очень важно, чтобы она была не на русском, иначе перевод карты теряет смысл.
  • Открыть карту в World Editor.
  • Если карта запротекчена, нужно воспользоваться программой по взлому. Их очень легко найти самостоятельно.
  • Карта открыта. Теперь можно переводить её. Для этого стоит пройтись по редактору объектов и игровому интерфейсу.
  • Если есть сложности с переводом, можно воспользоваться гугл-переводчиком. Но содержание углепластика в тексте карты резко возрастёт.
  • Сохраняем карту.
  • ???
  • PROFIT!
На правах капитана.
ответ
мб вот это стоит попробовать
ответ
MadWay, любая карта это mpq архив
открываем карту в архиваторе и через блокнот меняем все названия
это даже проще чем через редактор ибо можно копировать-вставить
вот статья по некоторым файлам внутри архива
XDep и Deprotector не помогли
они не смогли взломать карту или ты не разобрался как юзать взломанную карту?
пруф можно? (скинь карту взломанную через Deprotector)
ответ
Эмм, формат w3x читаем, открываем мпк редактором и вытаскиваем необходимые файлы, редактор тут ненужен.
Погодь, Doodad Christmas - она же открыта, открой в редакторе и меняй.
ответ
Я исправил баг х)
вот

23

» WarCraft 3 / Импорт музыки

Похожие вопросы:

ответ
с этим косяик есть. Если ты импортируешь в карту измененные с сохранения файлы, но с теми же путями - ты имеешь вероятность получить файлы с 0 байт(но чаще это только визуально 0 байт) либо остаётся старая версия. Бороться просто - переименовывать файлики в этот раз на "файл1" в следующий - обратно на "файл". Либо стараться реже реимпортировать одни и те же названия. Проверять багнулось ли лучше сразу.
ответ
Попробую через мкп.
не забудь и в файле импорта поменять
war3map.imp
ответ
Нашел ответ.
Использование mix архивов. Кидаем файлы в mix архив, сам архив в папку варкрафта, а в карте прописываем путь к файлу внутри архива. Варкрафт автоматически использует данные всех mix архивов в своей директории.
ответ
Осуществляешь импорт по неправильному пути. Например (я пробовал для орков), "Sound\Music\mp3Music\Orc1.mp3", "Sound\Music\mp3Music\Orc2.mp3", "Sound\Music\mp3Music\Orc3.mp3", "Sound\Music\mp3Music\Orc1X.mp3" и т.д. Все стандартные треки были заменены на мой. Чтобы корректно заменять музыку на карте, нужно знать пути импорта. Путь к оригинальным трекам можно посмотреть в mpq-архиве через архиваторы.

23

» WarCraft 3 / Timer

Похожие вопросы:

ответ
оказывается, во втором триггере я использовал ту же переменную индекса, что и в первом. Melissa и naxim , спасибо вам =)
ответ
На сайте же есть система респауна крипов xgm.guru/p/wc3/crs
ответ
Нет, сами удалятся без вашей помощи...
ответ
NewToJass, vjass это диалект
он ничего не убирает а лишь дополняет
если в vjass чтото не работает то и в jass это тоже не работает
ответ
Всё, разобрался, вопрос снимаю)

23

» WarCraft 3 / Анимации

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
советую переименовать модель\заребутить комп
текстуры стандартные юзал, я так понимаю

ответ
Убрать звуки моделям в War3ME или вместо анимаций прятать юнитов (Unit - Hide).
Steal nerves, добавлю: чтобы сделать их бессмертными и невыбираемыми, можно дать способность "Москиты". Тень убирается в РО.
ответ
Steal nerves:
анимацию апгрейда можно проиграть
а чтоб постоянная была. то прописыают триггером тэг анимации. или видел как у Иллидана? там два юнита: охотник и демон. Посмотри как у демона сделано. там есть прописано alternate
ответ
что за костыли блин
событие - приводит способность в действие
условие - применённая способность == божественный щит
действия:
unit u=GetTriggerUnit()
SetUnitVertexColor(u,0,0,0,255)
TriggerSleepAction(15) // здесь указываем время действия способности
SetUnitVertexColor(u,255,255,255,255)
если время действия зависит от уровня то юзай арифметику как писали выше
в твоём случае это 2 + (уровень способности * 2)
ответ
А вообще, ответом на подобные вопросы в 2017 году уже должны стать подобные ссылки: www.youtube.com/watch?v=pJNPBW4QGhg&t=1s

23

» WarCraft 3 / Вопрос о функции SetUnitBlendTime

Похожие вопросы:

ответ
через иф в действие записывать но это не кул
EnergyFrost, не угадал)
и чем тебе функция не нравится?
функция Condition берёт функцию и возвращает условие
native Condition takes code func returns conditionfunc
native TriggerAddCondition takes trigger whichTrigger, boolexpr condition returns triggercondition
а вобще это написано в статье
ответ
silence_AZ,
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
function UnitAddEffect takes unit u, real x, real y returns nothing
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl", x, y))
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(u), GetUnitY(u)))
endfunction

function Action takes nothing returns nothing
    local unit u = GetOrderedUnit()
    local real x = GetOrderPointX()
    local real y = GetOrderPointY()
    call UnitAddEffect(u, x, y)
endfunction

function InitTrig_Effect takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    loop
        call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
        set i = i + 1
        exitwhen i == 16
    endloop
    call TriggerAddAction( t, function Action )
endfunction
Создайте триггер "Effect", конвертируйте в текст, удалите все что там есть, копирните и вставьте мое, запускайте карту и побегайте юнитами.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
cJass
    define{
        func = function
        void = nothing
        GetX(u) = GetUnitX(u)
        GetY(u) = GetUnitY(u)
        //Constants
        Effect_OnUnit = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
        Effect_OnXY = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl"
    }

    void Action(){
        unit u = GetOrderedUnit();
        DestroyEffect(AddSpecialEffect(Effect_OnXY, GetOrderPointX(), GetOrderPointY()));
        DestroyEffect(AddSpecialEffect(Effect_OnUnit, GetX(u), GetY(u)));
    }

    void InitTrig_Effect(){
        trigger t = CreateTrigger()
        integer i = 0
        loop{
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null);
            i++;
            exitwhen i == 16;
        }
        TriggerAddAction( t, func Action );
    }
этот вариант будет оптимальнее в туче кода, хоть такая фигня и не нужна никому, но тем не менее..
ответ
SetUnitPosition довольно тяжелая операци, юзайте SetUnitX\Y в конце полета юзай SetUnitPosition для того чтобы юнит не залетел в непроходимое место.
Фильтр просто ужас, ну кто так фильтры делает?
Проверка на 'Aloc', я в ужасе на кой черт проверять на дамми если GropEnumUnitsInRange\Rect не выделяет москитов, тока EnumOfPlayer может пикнуть москитов, остальное не пикает их, на то они и москиты...
Вот как выглядит нормальный фильтр без локалок и прочего
function EnemyFilter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) )
endfunction
UnitDamageTargetEx - красиво но нафиг ненужно обводить в отдельную функцию с тучей аргументов + жутко неудобно, 100500 аргументов у функции и фиг знает за что какой от вечает, прямо так UnitDamageTarget, без отдельной функции.
Туча констант, тоже хорошо тока длят наработок, на деле ставь конкретные значения или юзай Difine vjass'a.
ответ
Стоп, я думал ты именно это и проверял...
Ещё есть вариант - тревога это реакция нейтральных монстров на то, что недалеко от них появилось здание (когда начинаешь строить здание, и тут из леса прибегают нейтралы, ломают, и убегают обратно).
первая проверка - мб эта функция делает так что данный нейтрал игнорирует то что рядом с ним появится здание, и он в итоге не побежит его атаковать
вторая проверка - возможно функция делает само здание игнорируемым для этих нейтралов, т.е. конкретно на него не будут сбегаться ближайшие нейтралы
Но я больше склоняюсь к первому

23

» WarCraft 3 / Продать все предметы

Похожие вопросы:

ответ
стемы
Я удалял всеь код кроме етой системы все ефект тотже. также я писал что переносил наработку на иную мапу и там все работало. понятно что проблема не в коде..по тому как баг в том что рынок(юнит) меняет владельца, на красного скажем, еслиб не менял багаб небыло, но есть карта где он есть.. на разных мапах при абсолютно едентичных настройках юнитов, и коде(никакого второстепенного кода нет тока тот что в 1м посту)
опшем так я психанул и начал отрезать куски из мапы, сначала в 10 раз удалил весь код кроме наработки, затем удалил итемы, и вернул код и вот чудо баг пропал,
=============================================================================
думаю проблема была в том что иды предметам я в ручную прописывал, там была своя закономерность, но увы теперь придется периписать все иды предметов, и заминить их в коде что очень ни удобно и моторно=(
ответ
Tornak, делать покупку предметов через покупку юнитов
этот вариант расписан уже 100500 раз везде где только можно и даже куча готовых систем есть

23

» WarCraft 3 / ID Звука

Похожие вопросы:

ответ
GF RaiseD:
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.

23

» WarCraft 3 / Юниты атакуют и кастуют способности

Похожие вопросы:

ответ
Tobi123:
Офк
Всё, разобрался. По совету nvc123 удалил руссификатор и появилось новое условие "Unit has specific Buff", за что ему огромное спасибо.
ответ
Урон настраивается через уровень способности, или как было сказано unit - damage target
команда для использования нестандартной способности берется от той способности, на основе которой ты её сделал, и если это цепь тралла - Unit - issue order with targetign a unit - orc - chain lighting
ответ
Ну решается всё довольно тривиально
Юнит атакован
приказ атакующего юнита не равен "атаковать"
б.е. - приказать атакующий ПКМ атакованного
При первой атаке произойдёт небольшая потеря времени, т.к. получив при каз юнит заново начнёт анимацию атаки. Зато орб будет прокать.
Алсо если приказать юниту перейти нападая на противников (триггерно или ручками) - приказ юнита будет какой-надо и орб будет срабатывать.
ответ
quq_CCCP, вот только это не позволит юзать книгу пока спелл не перезарядится
событие - юнит приводит способность в действие
в условии проверяем что это способность из нашего спелбука
потом триггерно нажимаем кнопку отмена(Esc)
в гуи это находится в разделе игра
называется вроде игрок нажимает отмена
в джасс это делается с помощью ForceUICancelBJ
в качестве игрока передаём владельца триггерного юнита
если это игрок а не какой нибудь AI скрипт то сработает
ответ
Читаем пока не поймем.

23

» WarCraft 3 / Кости и анимации

Похожие вопросы:

ответ
Obelick, цитирую статью:
  1. Проблемы с видимостью
Бывает необходимо скрыть в части анимаций какую то поверхность, например останки (скелет). Вы спокойно выбираете эту поверхность, и начинаете в каждой анимке в первом кадре выключать видимость (необходимо и достаточно выключать - включать видимость именно в первом кадре анимации), чисто случайно переходите ко второму кадру - ба!, видимость включилась, и так далее, вы пытаетесь выключить видимость во всех кадрах нужных анимаций, и совершенно зря.
Нужно просто открыть сохраненную модель с выключенной в первых кадрах анимаций видимостью, затем открыть ее в War3ME, открыть вкладку ОКНА - РЕДАКТОР АНИМАЦИЙ ПОВЕРХНОСТЕЙ, выбрать Geosetanimation, в которой Альфа анимирована (стоит галочка). Щёлкаем по кнопке Альфа, открывается список с адресами. адр еса должны идти в порядке возрастания, а у вас скорее всего запись 0 :0 или 0 :1 находится где то в середине списка. Просто удаляем эту запись и ставим ее в самом начале списка. Проверяем правильный порядок адресов, и если надо, то исправляем. После двоеточия должна стоять цифра 0 или 1, все цифры, отличные от этих, необходимо переправить на 0. Проверяем анимации, с видимостью все должно быть в порядке.
Такие же списки видимости бывают и у костей, и у эффектов, и у текстур, советую также их проверять, если занимались анимированием этих объектов.
ответ
работает только с моделями, у которых одинаковый скелет
таких немного
ответ
делается в пару кликов в вот этой версии mdlvis'a...
удаляешь анимации, заходишь оптимизатор - проверяешь что стоит галочка на 3 пунке снизу, жмёшь Ок...
ответ
igor_razor, да, была такая программа. Как она называлась не помню. Matrix Eater или что-то такое. Советую поискать на хайве на форуме. Точно найдешь.
Еще можно в мдлвизе задать в глобальной анимации главной кости (обычно это bone_root) отрицательный масштаб -100 по оси Y и готово! ну, теоретически
Да, все верно, Matrix Eater. Ее автор Retera кстати - это чувак, который написал утилиту для генерации моих эффектов. Забавный факт. Вопрос закрываю, мой ответ вроде более чем полный.
ответ
Способ №1
Открываем модель в вар3ме, находим в "Менеджере последовательностей" спикок анимаций, находим нужную, открываем ее параметры, запоминаем интервал (диапазон кадров), например Stand [3000-4333]. Далее в "Редакторе узлов" находим нужную кость по названию, нажимаем правой редактировать узел, и в повороте, переносе и масштабировании удаляем все строки, которые попадают в диапазон кадров этой анимации.
Способ №2
Открываем модель в mdlvis, нажимаем "модули->редактор анимаций", выбираем " анимки", выбираем нужную анимацию, переключаемся на вкладку "движение", выделяем нужную кость, на линейке кадров выбираем первый кадр и с шифтом последний таким образом, чтобы выделить всю линейку, удаляем сразу все точки на линейке.
Способ №3
Конвертируем модель в текстовый формат .mdl, открываем файл в блокноте, находим блок со списком анимаций, затем блок с поворотом, переносом и масштабированием нужной кости и проделываем аналогично способу №1, в начале каждого блока указано количество строк в нем, при удалении строк нужно менять это значение.

23

» WarCraft 3 / Проблема с освещением

Похожие вопросы:

ответ
восстанови MiscData.ini
ответ
Это происходит из-за per-vertex освещения. От подобных визуальных артефактов очень сложно избавиться, но можно немного замаскировать их, подкорректировав модели освещения (например, немного уменьшить интенсивность diffuse освещения и увеличить ambient):

23

» WarCraft 3 / Триггерный урон

Похожие вопросы:

ответ
Триггерно невозможно изменить урон стандартных способностей - тебе нужно полностью создавать весь эффект способности триггерно, а саму способность использовать только для запуска триггеров.
ответ
Ну разумеется нет, для этих пассивок нужен факт атаки а не тупо урон, урон наносится после удачного факта атаки.
ответ
Наименее ресурсозатратным для игрового процесса будет кастовать саму волну через отдельного дамми, который создаётся специально и только для волны силы. Сама волна наносит 1 ед урона. И потом определив, тип юнит-источника урона - наносим нужный урон от лица героя-хозяина юнита "волна силы".
В варианте "чекать группы каждые 0.0х сек" будет засоряться память и скорее всего будут подлагивания, в варианте со спец-дамиками засорится РО, выбирай из двух зол.
ответ
Останавливаешь юнит во время каста заклинания.
Создаёшь дамика.
Даёшь кастуемую способность.
Даёшь приказы на направление способности.
другой триггер отлавливает получение урона юнитами и если тип источника урона - дамми, то нанести такой-то урон от лица героя-хозяина.
ответ
Astra, очень багано
так как после последней атаки может многое изменится
так же урон при событие юнит получает урон зависит от брони и прочих резистов
если юнит с уроном 100 нанёс удар по врагу с физ резистом 50% а потом получил бафф/предмет на +100 урона то скилом нанесёт 50 урона хотя должен был бы нанести 200
тут нужно юзать бд
при касте скила брать из бд начальный урон юнита, бонусы предметов и бонусы всех бафов
тема кстати уже много раз поднималась
и каждый раз все заканчивалось тем что афтар забивал на подобную систему либо писал "вы все нубы/тролли и не знаете/не хотите сказать как сделать это легко и просто"
ибо подобная система требует кучи кода и как минимум 30 прочтённых статей по jass
вот статья о бд

23

» WarCraft 3 / Изменение анимации (способность)

Похожие вопросы:

ответ
Поиграйся с орбэффектами, добавляя в разрешённые цели необходимую клиссификацию. А вообще, просто поступи так:
Атака есть изначально, но при ударе юнитом по камню или дереву, проверка, имеет ли он кирку, и если да, тогда ролить переменную от N до N, и если равно N - создать такой то ресурс.
Можно также сделать систему с уровнем кирки(ну типа деревянная каменная железная алмазная окда), и по уровню кирки определять коилчество последовательностей "Иначе": Роллить первое число от 1 до 100 - камень. Если не выпал, но кирка у тебя выше деревянной - Роллить от 1 до 200 - железо. Если не выпало, но кирка выше каменной - роллить от 1 до 1000 - аметист, и т.д.

23

» WarCraft 3 / Изменение значения предмета.

Похожие вопросы:

ответ
Нет, тока кешь - тем более лимита на число значений в файле кеша нету, хоть миллион значений заноси.
По мимо героя, что тебе надо :
  1. Можно пробовать Preload Exploit, но если чесно - кешь удобнее, особенно для гуишников.

23

» WarCraft 3 / Как сделать захват территории?

Похожие вопросы:

ответ
Gerych, сюда тоже можно но вопрос будет закрыт через неделю с момента последнего ответа
ну а вообще для таких вещей стоит создать бложик и там в качестве ресурса подобное спрашивать